package com.gs.cd.service.resource.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.gs.cd.model.resource.SysResourceGroup;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 服务类
 * </p>
 *
 * @author seven
 * @since 2020-12-22
 */
public interface SysResourceGroupService extends IService<SysResourceGroup> {

    /**
     * 获取非子资源组 资源组
     *
     * @param saleCode
     * @return
     */
    List<SysResourceGroup> listRoot(String saleCode);

    /**
     * 通过saleCode 获取资源组
     *
     * @param saleCode
     * @return
     */
    List<SysResourceGroup> listBySaleCode(String saleCode);

    /**
     * 通过saleCode 获取资源组
     *
     * @param saleCode
     * @param queryWrapper
     * @return
     */
    List<SysResourceGroup> listBySaleCode(String saleCode, QueryWrapper<SysResourceGroup> queryWrapper);

    /**
     * 通过ids获取资源组 携带资源 ids 为空表示查询所有
     *
     * @param saleCode
     * @param ids
     * @return
     */
    List<SysResourceGroup> listWithResourceByIds(String saleCode, List<String> ids);

    /**
     * 通过codes获取资源组
     *
     * @param saleCode
     * @param codes
     * @return
     */
    List<SysResourceGroup> listByCodes(String saleCode, List<String> codes);

    /**
     * 通过code获取资源组
     *
     * @param saleCode
     * @param code
     * @return
     */
    SysResourceGroup listByCode(String saleCode, String code);

    /**
     * 删除资源组 和关联的资源
     *
     * @param saleCode
     * @return
     */
    boolean removeAndRelationsBySaleCode(String saleCode);

    /**
     * 复制资源组 还复制了相关连资源 目前无策略模式，为删除再添加的覆盖方式
     *
     * @param currentSaleCode
     * @param targetSaleCode
     * @return
     */
    boolean copy(String currentSaleCode, String targetSaleCode);

    /**
     * 拖拽排序
     *
     * @param ids 有序的ids集合
     * @return
     */
    boolean drag(List<String> ids);

    /**
     * 只获取根资源组 不包含子信息
     *
     * @param saleCode
     * @return
     */
    List<SysResourceGroup> listOnlyRoot(String saleCode);
}
